﻿#pragma once

#include "ImageTask.h"
#include <QDialog>
#include <memory>

/**
 * @brief 图像阈值化任务类
 */
class ThresholdTask : public ImageTask {
public:
    ThresholdTask() = default;

    /**
     * @brief 执行阈值化操作
     * @param image 输入和输出的图像
     */
    void execute(cv::Mat& image) override;

    /**
     * @brief 获取任务名称
     * @return 任务名称 "阈值化"
     */
    std::string getName() const override;

    /**
     * @brief 获取配置界面
     * @return 配置界面对话框
     */
    std::unique_ptr<QDialog> getConfigUI() override;

private:
    bool useAutoThreshold = true;   // 是否使用自动阈值，默认为 true
    double manualThreshold = 128.0; // 手动阈值，默认为 128.0
    double maxValue = 255.0;        // 最大值，默认为 255.0
};